//路由的拦截处理
import router from "./router/index";
import useUserStore from "./store/user";
import { message } from "ant-design-vue";
import NProgress from 'nprogress';
import 'nprogress/nprogress.css';
//判断是否登录
router.beforeEach((to, from, next) => {
  NProgress.start();
  //除过登录
  if (to.path === "/login") {
    next();
  } else {
    const userStore = useUserStore();
    //判断是否登录了 - token
    if (userStore.token) {
      //用户信息是否存在
      if (userStore.userinfo) {
        //存在
        if (!userStore.userInfo.status) {
          //说明  当前用户已被禁止
          message.warning("当前账号已被禁止");
          next("/login");
        } else if (
          !userStore.userInfo.roles ||
          userStore.userInfo.roles.length === 0
        ) {
          //没有分配角色   只能访问公共页面
          message.warning("当前账号暂无角色");
          next();
        } else {
          next();
        }
      } else {
        // 不存在 -- 重新请求
        userStore
          .getUserInfor()
          .then((res) => {
            //拿到结果放行
            next();
          })
          .catch((e) => {
            //发送完请求获取不到
            message.warning("无法获取用户信息");
            next("/login");
            console.log(e);
          });
      }
    } else {
      message.warning("暂无权限");
      //去登陆页面
      next("/login");
    }
  }
});
router.afterEach(() => {
  NProgress.done();
})
